001 /*
002 * Copyright 2004-2005 Stephen J. McConnell.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
013 * implied.
014 *
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package net.dpml.transit;
020
021 /**
022 * A simple wrapper exception around exceptions that could occur while accessing
023 * environment parameters.
024 *
025 * @author <a href="http://www.dpml.net">Digital Product Meta Library</a>
026 * @version 1.0.1
027 */
028 public class EnvironmentException extends RuntimeException
029 {
030 /**
031 * Serial version identifier.
032 */
033 static final long serialVersionUID = 1L;
034
035 /**
036 * the environment variable name if available
037 */
038 private final String m_variable;
039
040 /**
041 * root cause
042 */
043 private final Throwable m_cause;
044
045 /**
046 * Creates an exception denoting a failure while attempting to access an
047 * environment variable within an operating system and shell specific
048 * environment that is caused by another exception.
049 *
050 * @param cause the underlying exception that caused the failure
051 */
052 EnvironmentException( final Throwable cause )
053 {
054 super();
055
056 m_variable = null;
057 m_cause = cause;
058 }
059
060
061 /**
062 * Creates an exception denoting a failure while attempting to access an
063 * environment variable within an operating system and shell specific
064 * environment.
065 *
066 * @param message the reason for the access failure
067 */
068 EnvironmentException( final String message )
069 {
070 super( message );
071
072 m_variable = null;
073 m_cause = null;
074 }
075
076
077 /**
078 * Creates an exception denoting a failure while attempting to access an
079 * environment variable within an operating system and shell specific
080 * environment that is caused by another exception.
081 *
082 * @param variable the variable whose value was to be accessed
083 * @param cause the underlying exception that caused the failure
084 */
085 EnvironmentException( final String variable, final Throwable cause )
086 {
087 super();
088
089 m_variable = variable;
090 m_cause = cause;
091 }
092
093
094 /**
095 * Creates an exception denoting a failure while attempting to access an
096 * environment variable within an operating system and shell specific
097 * environment.
098 *
099 * @param variable the variable whose value was to be accessed
100 * @param message the reason for the access failure
101 */
102 EnvironmentException( final String variable, final String message )
103 {
104 super( message );
105
106 m_variable = variable;
107 m_cause = null;
108 }
109
110
111 /**
112 * Gets the variable that was to be accessed.
113 *
114 * @return the value of the variable
115 */
116 public String getVariable()
117 {
118 return m_variable;
119 }
120
121
122 /**
123 * Return the causal exception.
124 *
125 * @return the exception that caused this exception (possibly null)
126 */
127 public Throwable getCause()
128 {
129 return m_cause;
130 }
131
132
133 /**
134 * Prepends variable name to the base message.
135 * @return the exception message
136 * @see java.lang.Throwable#getMessage()
137 */
138 public String getMessage()
139 {
140 String base = super.getMessage();
141
142 if ( null == base )
143 {
144 return "Failed to access " + m_variable + " environment variable";
145 }
146
147 return "Failed to access " + m_variable
148 + " environment variable - " + base;
149 }
150 }
151
152
153